package model;

import java.io.Serializable;
import java.util.List;

/**
 * 
 * Interface for Email
 *
 */
public interface EmailImp extends Serializable
{
    /**
     * @return Returns the email sender as a String.
     */
    public String getSender();

    /**
     * @return Returns the list of email recipients as a List of String objects.
     */
    public List<String> getReceiver();

    /**
     * @return Returns the subject of the email as a String.
     */
    public String getSubject();

    /**
     * @return Returns the message or body content of the email as a String.
     */
    public String getMessage();
    
    /**
     * @return Returns the time of receiption of the email as a String object.
     */
    public String getTime();
    
    /**
     * Sets the file path where email objects should be stored locally, this information is used only to persist but not saved in the file
     * @param persistencePath is the path passed as a String. 
     */
    public void setPersistencePath(String persistencePath);
    
    /**
     * @return Returns the persistence path reference
     */
    public String getPersistencePath();
    
    /**
     * Returns a string version of the email instance.
     * @return returns a String with fields separated by the character '~', the values are in following order: Sender, Receivers, Subject, Message, Time.
     */
    public String asString();
    
}
